package eth

import (
	"net"
	"strings"
)

// SliceRemoveValueIP 从一个 net.IP 切片中移除指定的 IP 地址。
// 该函数从给定的IP地址切片中移除指定的IP地址，返回一个新的切片，不修改原切片。
//
// 参数:
//
//	l []net.IP - 原始IP地址切片
//	value net.IP - 要移除的IP地址
//
// 返回值:
//
//	[]net.IP - 移除指定IP后的新切片
func SliceRemoveValueIP(l []net.IP, value net.IP) []net.IP {
	// 如果输入切片为空，直接返回空切片
	if len(l) == 0 {
		return []net.IP{}
	}

	// 创建新的切片来存储结果
	var result []net.IP

	// 遍历原始切片
	for _, ip := range l {
		// 如果当前IP不等于要移除的IP，则保留在结果中
		if !strings.EqualFold(ip.String(), value.String()) {
			result = append(result, ip)
		}
		// 否则（相等），则跳过此IP
	}

	return result
}
